package com.quectel.core.module.pet.dto;

import com.quectel.core.module.village.dto.VillageDto;
import com.quectel.core.module.village.dto.VillageRoomDto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;

/**
 *
 * @author ryan
 * @email ryan.ran@quectel.com
 * @date 2023/11/08 16:25
 */
@Data
@Schema
public class PetDto implements Serializable {

    /**
    * 
    */
    @Schema(description = "")
    private Long id;

    /**
    * 租户 id
    */
    @Schema(description = "租户 id")
    private Long tenantId;

    /**
    * 小区 id
    */
    @Schema(description = "小区 id")
    private Long villageId;

    /**
     * 楼栋id
     */
    @Schema(description = "楼栋id")
    @NotNull
    private Long buildingId;

    /**
     * 楼层id
     */
    @Schema(description = "楼层id")
    @NotNull
    private Long floorId;

    /**
    * 房屋 id
    */
    @Schema(description = "房屋 id")
    private Long roomId;

    /**
    * 养宠人姓名
    */
    @Schema(description = "养宠人姓名")
    private String ownerName;

    /**
    * 养宠人手机号
    */
    @Schema(description = "养宠人手机号")
    private String ownerMobile;

    /**
    * 宠物名称
    */
    @Schema(description = "宠物名称")
    private String petName;

    /**
    * 宠物类型 1 猫 2 狗
    */
    @Schema(description = "宠物类型 1 猫 2 狗")
    private Byte petType;

    /**
    * 宠物品种
    */
    @Schema(description = "宠物品种")
    private String petBreed;

    /**
    * 出生日期
    */
    @Schema(description = "出生日期")
    private Date birthDate;

    /**
    * 宠物性别 1 雄 0 雌
    */
    @Schema(description = "宠物性别 1 雄 0 雌")
    private Byte gender;

    /**
    * 宠物照片
    */
    @Schema(description = "宠物照片")
    private String photoUrl;

    /**
    * 宠物描述
    */
    @Schema(description = "宠物描述")
    private String description;

    /**
    * 许可证号
    */
    @Schema(description = "许可证号")
    private String licenseNumber;

    /**
    * 取证时间
    */
    @Schema(description = "取证时间")
    private Date certificationTime;

    /**
    * 最新疫苗时间
    */
    @Schema(description = "最新疫苗时间")
    private Date lastVaccineDate;

    /**
    * 宠物登记证明文件
    */
    @Schema(description = "宠物登记证明文件")
    private String registrationCertificateUrl;

    /**
    * 宠物疫苗文件
    */
    @Schema(description = "宠物疫苗文件")
    private String vaccineCertificateUrl;

    /************非数据库字段 start ************/
    private VillageDto village;
    private VillageRoomDto villageRoom;
    /************非数据库字段 end **************/
}
